package net.lgy.service.impl;


import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;

import com.alibaba.dashscope.common.GeneralGetParam;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import lombok.extern.slf4j.Slf4j;
import net.lgy.service.ChatService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.Arrays;

@Service
@Slf4j
public class ChatServiceImpl implements ChatService {

    @Value("${ai.key}")
    private String aiKey;

    @Override
    public GenerationResult callWithMessage(String input) throws Exception {
//        初始化大模型生成器
        Generation gen = new Generation();

//        构建系统角色消息
        Message systemMessage = Message.builder()
                .role(Role.SYSTEM.getValue())
                .content("你是星哥的助理")
                .build();

//        构建用户消息
        Message userMessage = Message.builder()
                .role(Role.SYSTEM.getValue())
                .content(input)
                .build();


//        构建请求参数，配置模型的关键参数和对话上下文

        // 构造请求参数：配置模型参数和对话上下文
        GenerationParam param = GenerationParam.builder()

                .model(Generation.Models.QWEN_TURBO)  // 指定阿里云通义千问模型
                .messages(Arrays.asList(systemMessage, userMessage))  // 组合对话上下文
                .resultFormat(GenerationParam.ResultFormat.MESSAGE)  // 设置返回格式
                .temperature(0.8f)  // 控制生成随机性的温度参数
                .apiKey(aiKey) // 添加 API key 到参数中
                .build();


        return gen.call(param);
    }
}
